---
title: SAIF.Services.Printing dependencies
summary: Internal and external dependencies for this library.
status: draft
owner: SAIF Documentation
last_reviewed: 2026-08-21
library: SAIF.Services.Printing
reference_type: embedded
---

# SAIF.Services.Printing dependencies

## Internal dependencies

| Dependency | Reference Type | Usage |
| --- | --- | --- |
| [SAIF.Services.Imaging.Import](../saif-services-imaging-import/overview.md) | Project Reference | `clsImageImport` is the type of `clsPrint.ImportInfo` and `CompositeRequestClass.Importinfo`; its `ToString` output is the `inImportInfo` argument on the synchronous xPression `distributeDocument` call |
| SAIF.BOF.Framework | NuGet Package | `SAIF.Framework.Security.clsSecurityPrincipal`, `AppGlobal.EnvironmentService`, `EnvironmentServiceBase` — Environment API access for all configuration keys and flags |
| SAIF.Framework.Common | NuGet Package | Base types `SAIFXDocument` / `SAIFXElement` inherited by `XDesignXDocument` / `XDesignXElement`, and `SAIF.Framework.Extensions` helpers (`Replicate`, `PerformForAll`, `AddElement`) |
| SAIF.HashUtil | NuGet Package | Referenced by the project; no direct code usage found in this library** |
| SAIF.Web.API.Clients | NuGet Package | Referenced (`SAIF.Web.API.Clients`, `SAIF.Web.API.Core`); no direct code usage found in this library** |

## External dependencies

| Dependency | Version | Usage |
| --- | --- | --- |
| Oracle.ManagedDataAccess | 21.5.0 | Referenced and registered in `app.config`/`Web.config` `DbProviderFactories`; no ODP.NET code in this library — present to satisfy framework/runtime provider registration* |
| Newtonsoft.Json | 8.0.3 | Transitive/reference only; no direct usage found** |
| RestSharp | 106.12.0 | Transitive/reference only; no direct usage found** |
| Microsoft.Bcl.AsyncInterfaces, System.Buffers, System.Memory, System.Numerics.Vectors, System.Runtime.CompilerServices.Unsafe, System.Text.Encodings.Web, System.Text.Json, System.Threading.Tasks.Extensions, System.ValueTuple | various | Framework/BCL support packages required by the SAIF framework packages* |

## API dependencies

| Endpoint | Method | Called from | Usage |
| --- | --- | --- | --- |
| `documentGeneratorServiceUrl` (xPression `clsGenerate.asmx`, design-time default `http://xpressionsdev:8000/wsDocuments/clsGenerate.asmx`) | SOAP/ASMX | `clsPrint` — `previewPDF`, `previewDocument`, `printPDF`, `distributeDocument`, `xpublishDocument`, `xpreviewHTML`, `xpublishAndReturnDocument`, `xdocumentsForCategory`, `xoutputProfilesForDocument`, `xcategoriesForUser` | Document composition, preview, print, and distribution |
| `sqlReportingServiceUrl` (SSRS `ReportExecution2005.asmx`, design-time default `http://reports.saif.com/_vti_bin/ReportServer/ReportExecution2005.asmx`) | SOAP/ASMX | `clsRSPrint` — `PreviewDocument` (`LoadReport2`, `SetExecutionParameters`, `Render2`) | Render an SSRS report to the selected format |
| `documentMSMQPath` | MSMQ (`System.Messaging.MessageQueue`, transactional) | `clsPrint` — asynchronous `distributeDocument`, `StartMQTransaction`, `EndMQTransaction` | Queue a `CompositeRequestClass` for deferred/composite distribution |
| `idmFilePath` | File-system path (passed to xPression) | `clsPrint` — `IDMPath` property, copied into `CompositeRequestClass.IDMPath` | Imaging (IDM) drop location for the composite request |

## Dependency risks and notes
- `clsRSPrint`'s parameterised constructor is `Private`, so only the ambient `AppGlobal.EnvironmentService`
  path is reachable for it; the environment service cannot be substituted from outside for testing.*
- `ReportBase.xPrint` builds its `clsPrint` with the parameterless constructor, bypassing the environment
  service the report itself was given, so the same host process could resolve two different environment
  services within one report lifecycle.*
- All four Environment API configuration keys (`documentGeneratorServiceUrl`, `documentMSMQPath`,
  `idmFilePath`, `sqlReportingServiceUrl`) must be provisioned in the hosting application/environment, and
  `AppGlobal.EnvironmentService` must be initialised before any parameterless constructor in this library
  runs, or construction fails or yields a null endpoint.
- The design-time default web-reference URLs are plain `http://`, and the runtime URLs (resolved via the
  Environment API) are not visible in this repository, so whether the effective endpoints use TLS is
  unknown.**
- `Oracle.ManagedDataAccess` is referenced and its provider factory is registered in `app.config`/`Web.config`
  purely to satisfy the framework/runtime configuration surface; this library opens no database connection.
- The MSMQ queue at `documentMSMQPath` must exist and be transactional, since every asynchronous send occurs
  inside a `MessageQueueTransaction`.
- `SAIF.HashUtil`, `SAIF.Web.API.Clients`, `Newtonsoft.Json`, and `RestSharp` are referenced but have no
  confirmed direct usage in this library's compiled source.**

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Services.Printing/clsPrint.vb`
- `SAIF.Services.Printing/clsRSPrint.vb`
- `SAIF.Services.Printing/Reporting/IReport.vb`
- `SAIF.Services.Printing/Reporting/ReportBase.vb`
- `SAIF.Services.Printing/Reporting/XDesignXDocument.vb`
- `SAIF.Services.Printing/Reporting/XDesignXElement.vb`
- `SAIF.Services.Printing/app.config`
- `SAIF.Services.Printing/Web.config`
- `SAIF.Services.Printing/My Project/Settings.Designer.vb`
- `SAIF.Services.Printing/My Project/Settings.settings`
- SAIF.Services.Printing/SAIF.Services.Printing.vbproj
- SAIF.Services.Printing/packages.config
- SAIF.Services.Printing/clsPrint.vb
- SAIF.Services.Printing/clsRSPrint.vb
- SAIF.Services.Printing/app.config
- SAIF.Services.Printing/Web.config
- SAIF.Services.Imaging.Import/SAIF.Services.Imaging.Import.vbproj
